// ⚠️  此文件已废弃 - This file is deprecated
// 统一的配置接口已迁移至 ConfigurationAppServiceInterfaces.cs
// Unified configuration interfaces have been migrated to ConfigurationAppServiceInterfaces.cs
//
// 为了向后兼容保留此文件，建议新代码使用统一接口文件中的定义
// This file is kept for backward compatibility. New code should use the unified interface.

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Matrix.Configuration.DTOs;

namespace Matrix.Configuration.Services
{
    /// <summary>
    /// 配置管理应用服务接口（已废弃）
    /// 请使用 ConfigurationAppServiceInterfaces.cs 中的统一接口
    /// </summary>
    [Obsolete("此接口已废弃，请使用 ConfigurationAppServiceInterfaces.cs 中的 Matrix.Configuration.Contracts.IConfigurationAppService", false)]
    public interface IConfigurationAppService : ICrudAppService<
        ConfigurationItemDto,
        Guid,
        GetConfigurationItemListInput,
        CreateConfigurationItemDto,
        UpdateConfigurationItemDto>
    {
        Task<ConfigurationItemDto> GetByKeyAsync(GetConfigurationItemInput input);
        Task<ListResultDto<ConfigurationItemDto>> GetByNamespaceAsync(string @namespace);
        Task<T> GetTypedAsync<T>(GetConfigurationItemInput input);
        Task SetTypedAsync<T>(GetConfigurationItemInput input, T value);
        Task<bool> ExistsAsync(GetConfigurationItemInput input);
        Task<Dictionary<string, ConfigurationItemDto>> GetBatchAsync(List<GetConfigurationItemInput> inputs);
        Task<ListResultDto<ConfigurationItemDto>> SetBatchAsync(List<BatchConfigurationItemDto> configurations);
        Task DeleteByKeyAsync(GetConfigurationItemInput input);
        Task<string> WatchAsync(GetConfigurationItemInput input, Action<ConfigurationItemDto> callback);
        Task UnwatchAsync(string watchId);
    }
}